package com.ssm.sfzy.controller;

//import com.ssm.sfzy.utils.VideoUtil;
import com.ssm.sfzy.utils.VideoUtil;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ssm.sfzy.utils.Result;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @ClassName FileController
 * @Description TODO
 * @Author libowen
 * @Date 2024年03月29日 16:23
 * @Version 1.0
 */
@RestController
@CrossOrigin
public class  FileController {
    private String realPath = "D:\\upload";
    @PostMapping("/upload")
    public Object upload( MultipartFile file) throws IOException {
        if(file.isEmpty()){ // 没有上传
            return Result.error();
        }
        // 上传
        // 获取文件名
        String filename = file.getOriginalFilename();
        // 处理重名问题
        filename = UUID.randomUUID().toString()+filename;
        // 获取当前项目的upload文件夹
        // 处理日期作为文件夹问题
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
        String dname = sdf.format(new Date());
        // 判断文件夹是否存在
        File dfile  = new File(realPath,dname);
        if(!dfile.exists()){
            dfile.mkdirs();
        }
        // 上传
        file.transferTo(new File(dfile,filename));
        // 组成上传的文件夹名和文件名 ，返回给前端
        filename = "/"+dname+"/"+filename;

        return Result.success(filename);
    }
//
//
//    @PostMapping("/musicUpload")
//    public Object musicUpload( MultipartFile file) throws IOException {
//        if(file.isEmpty()){ // 没有上传
//            return Result.error();
//        }
//        // 上传
//        // 获取文件名
//        String filename = file.getOriginalFilename();
//        // 处理重名问题
//        filename = UUID.randomUUID().toString()+"_"+filename;
//        // 获取当前项目的upload文件夹
//        // 处理日期作为文件夹问题
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
//        String dname = sdf.format(new Date());
//        // 判断文件夹是否存在
//        File dfile  = new File(realPath,dname);
//        if(!dfile.exists()){
//            dfile.mkdirs();
//        }
//        // 上传
//        file.transferTo(new File(dfile,filename));
//        // 组成上传的文件夹名和文件名 ，返回给前端
//        filename = "/"+dname+"/"+filename;
//
//        return Result.success(filename);
//    }

//    @PostMapping("/videoUpload")
//    public Object videoUpload( MultipartFile file ) throws IOException {
//        if(file.isEmpty()){ // 没有上传
//            return Result.error();
//        }
//        // 上传
//        // 获取文件名
//        String filename = file.getOriginalFilename();
//        // 处理重名问题
//        filename = UUID.randomUUID().toString()+"_"+filename;
//        // 获取当前项目的upload文件夹
//        // 处理日期作为文件夹问题
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
//        String dname = sdf.format(new Date());
//        // 判断文件夹是否存在
//        File dfile  = new File(realPath,dname);
//        if(!dfile.exists()){
//            dfile.mkdirs();
//        }
//        // 上传
//        file.transferTo(new File(dfile,filename)); // 一旦上传成功，则file文件被清空了
//
//        // 计算 上传成功后的文件的时长
//        InputStream in = new FileInputStream(new File(dfile,filename));
//        long time = VideoUtil.getVideoTime(in);
//
//        // 组成上传的文件夹名和文件名 ，返回给前端
//        filename = "/"+dname+"/"+filename;
//
//        Map map = new HashMap();
//        map.put("filename",filename);
//        map.put("time",time);
//        return Result.success(map);
//    }


    @RequestMapping("/yuLan")
    public void yuLan(String filename, HttpServletResponse response) throws IOException {
        // 获取文件所属的真实路径
        File file = new File(realPath,filename);
        // 组成字节输出流
        FileInputStream fin = new FileInputStream(file);
        // 设置响应头信息
        response.setHeader("Content-Disposition", "filename="+filename);//预览
        //System.out.println(filename);
        // 组成相应流
        ServletOutputStream out = response.getOutputStream();
        // 拷贝
        IOUtils.copy(fin,out);
        // 释放资源
        out.close();
        fin.close();
    }

}
